package main

import "fmt"

// func testA() {
// 	fmt.Println("testA ~~~")
// }

// func testB() (err error) {

// 	defer func() {
// 		if x := recover(); x != nil {
// 			// 此时panic和value被添加到x中
// 			err = fmt.Errorf("internal error: %v", x)
// 		}
// 	}()
// 	panic("panic error ~~~")

// 	return err
// }

// func testC() {
// 	fmt.Println("testC ~~~")
// }

// func main() {
// 	testA()
// 	err := testB()
// 	fmt.Println(err)
// 	testC()
// }

func test() {
	defer func() {
		fmt.Println(recover())
	}()

	defer func() {
		panic("test2")
	}()

	panic("test1")
}

func main() {
	test()
}
